define(["common"],function($){

function AbstractObject(){
}

AbstractObject.prototype.binds=function(){
  
}


AbstractObject.prototype.callSuperFunc=function(parentType,funcName){
  return this.applySuperFunc(parentType, funcName, $.shift($.shift(arguments)));
}


AbstractObject.prototype.applySuperFunc=function(parentType,funcName,args){
  if(parentType&&funcName){
    var func = parentType.prototype[funcName];
    if(func){
      return func.apply(this,args);
    }
  }
}

AbstractObject.prototype.updateSettings=function(newer){
  if(this.settings&&newer){
    $.extend(this.settings,newer);
  }
}

AbstractObject.prototype.getSettings=function(){
  return this.settings;
}


//AbstractObject.prototype.constructor=AbstractObject;
//AbstractObject.prototype.parents=Object;

/*
AbstractObject.prototype.getSuper=function(){
  return eval(this.parents.prototype.constructor.name).prototype;
}

AbstractObject.prototype.callSuperFunc=function(name){
  return this.getSuper()[name].apply(this,$.shift(arguments));
}

AbstractObject.prototype.callSuper=function(){
  return this.getSuper().constructor.apply(this,arguments);
}
*/

window.AbstractObject = AbstractObject;

});
